(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

isEmpty(nil) → true
isEmpty(cons(x, xs)) → false
last(cons(x, nil)) → x
last(cons(x, cons(y, ys))) → last(cons(y, ys))
dropLast(nil) → nil
dropLast(cons(x, nil)) → nil
dropLast(cons(x, cons(y, ys))) → cons(x, dropLast(cons(y, ys)))
append(nil, ys) → ys
append(cons(x, xs), ys) → cons(x, append(xs, ys))
reverse(xs) → rev(xs, nil)
rev(xs, ys) → if(isEmpty(xs), dropLast(xs), append(ys, last(xs)), ys)
if(true, xs, ys, zs) → zs
if(false, xs, ys, zs) → rev(xs, ys)

Rewrite Strategy: FULL

(1) DecreasingLoopProof (EQUIVALENT transformation)

The following loop(s) give(s) rise to the lower bound Ω(n1):
The rewrite sequence
last(cons(x, cons(y, ys))) →+ last(cons(y, ys))
gives rise to a decreasing loop by considering the right hand sides subterm at position [].
The pumping substitution is [ys / cons(y, ys)].
The result substitution is [x / y].

(2) BOUNDS(n^1, INF)